<template>
  <div class="school">
    <h2>学校名称：{{ name }}</h2>
    <h2>学校地址：{{ address }}</h2>
  </div>
</template>

<script>
//引入消息订阅对象
import PubSub from "pubsub-js";

export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "School",
  data() {
    return {
      name: "尚硅谷",
      address: "北京",
    };
  },
  mounted() {
    //优化使用消息订阅模式，挂载完毕就订阅一个消息（消费）
    //会收到两个参数，第一个参数是【消息名】，第二个参数是【数据】
    //同样的，如果想this指向当前组件，有两种方式：1箭头函数，2将方法定在methods中（vue覆盖）
    this.pubId = PubSub.subscribe("hello", (eventName, data) => {
      console.log("有人发布了hello消息，hello消息的回调执行了。数据:" + data);
    });
  },
  beforeDestroy() {
    //组件销毁前，取消消息订阅。  需将订阅的具体消息id传入，可绑定在this组件实例身上
    PubSub.unsubscribe(this.pubId);
  },
};
</script>

<style scoped>
.school {
  background-color: blue;
  padding: 5px;
}
</style>